package com.sc.nft.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.MerchantPledgeTaskConf;
import com.sc.nft.entity.vo.*;
import com.sc.nft.entity.vo.merchantPledgeTask.AdminExaminePageVO;
import com.sc.nft.entity.vo.merchantPledgeTask.AminMerchantPledgeTaskConfDetailsVO;
import com.sc.nft.enums.MerchantPledgeTaskExamineStatusEnum;
import com.sc.nft.enums.UserMerchantPledgeTaskStatusEnum;

import java.util.Date;
import java.util.List;

/**
 * 商户质押任务配置主表服务接口
 *
 * @author Sun
 * @since 2023-08-21 15:29:13
 * @description 由 Mybatisplus Code Generator 创建
 */
public interface AdminMerchantPledgeTaskConfService {

    /**
     * 获取审核列表
     * @param daoName
     * @param examineStatus
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminExaminePageVO> getExaminePage(String daoName, MerchantPledgeTaskExamineStatusEnum examineStatus, Integer pageNo, Integer pageSize);

    /**
     * 获取商户质押任务配置详情
     * @param id
     * @return
     */
    AminMerchantPledgeTaskConfDetailsVO getMerchantPledgeTaskConfDetails(Long id);

    /**
     * 审核通过/不通过
     * @param id
     * @param examineStatus
     */
    void examineMerchantPledgeTask(Long id, MerchantPledgeTaskExamineStatusEnum examineStatus,String reason);

    /**
     * 修改质押活动
     * @param merchantPledgeTaskConf
     */
    void updatePledgeTaskInfo(MerchantPledgeTaskConf merchantPledgeTaskConf);

    /**
     * 用户商户质押任务的记录
     * @param daoName
     * @param userTel
     * @param pledgeName
     * @param status
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<MerchantUserPledgeTaskPageVO> getMerchantUserPledgeTaskRecordPage(String daoName, String userTel, String pledgeName, UserMerchantPledgeTaskStatusEnum status, Integer pageNo, Integer pageSize,Boolean isFrozen);

    /**
     * 用户质押任务详情
     * @param id
     * @return
     */
    UserMerchantPledgeTaskRecordDetailsVO getMerchantUserPledgeTaskRecordDetails(Long id);

    /**
     * 分页获取记录的奖励详情
     * @param id
     * @param startTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<UserPledgeTaskRwardsDetailsVO> getMerchantUserPledgeTaskRwardsDetails(Long id, Date startTime, Date endTime, int pageNo, int pageSize);

    /**
     * 导出数据预览
     * @param pledgeName
     * @param daoId
     * @return
     */
    List<MerchantPledgeDataExportPreviewVO> merchantPledgeDataExportPreview(String pledgeName, Long daoId);

    /**
     * 获取所有daoId
     * @return
     */
    List<AdminUserCreatorInfoAllDao> getAllDao();
}
